//
//  Date+String.swift
//  TTCOM
//
//  Created by Toj on 8/1/22.
//

import Foundation

/**
 * 总结:
 * Date 类型是UTC 时间
 * date.to_string UTC -> 本地时间
 * dateString.to_date 本地时间 -> UTC时间
 * 如果服务器返回的是UTC 时间, 必须加上Z的信息 Z == +0000
 * 如果没有返回Z则认为是当前时区的时间, Date 会转换到UTC时间
 * e.g.:
 * "2023-11-09T07:22:13.000+0000"  -> Date
 * +0000代表UTC时间,  date: 2023-11-09 07:22:13.000+0000
 * -0800代表西8区时间, date: 2023-11-09 15:22:13.000+0000
 * +0800代表东8区时间, date: 2023-11-08 23:22:13.000+0000
 */

public extension Date {
    
    var to_string: String {
        return to_string()
    }
    
    /**
     * 将UTC 时间转换成本地字符串时间
     * UTC -> Local
     */
    func to_string(_ format: String = "yyyy-MM-dd HH:mm:ss") -> String {
        let df = DateFormatter()
        df.dateFormat = format
        let str = df.string(from: self)
        return str
    }
    
    var to_local: Date {
        var date = self
        let seconds = TimeZone.current.secondsFromGMT()
        date.addTimeInterval(TimeInterval(seconds))
        return date
    }
}
